﻿Imports System.Data.SqlClient
Public Class frmCatalogoServiciosDetalle
    Dim servicio As New clsServicios
    Dim Bitacora As New clsActividad
    Dim Usuario As New clsUsuarioPrincipal
    Private mstrCondicion As String
    Private NombresServicios As New DataTable("Nombres")
    Private CadenaAutocompletado As New AutoCompleteStringCollection
    Public WriteOnly Property Condicion() As String
        Set(ByVal value As String)
            mstrCondicion = value
        End Set
    End Property

    Private Sub frmCatalogoServiciosDetalle_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        Bitacora.RegistraActividad("Cerró al catálogo detallado de Servicios")
        Usuario.Ubicacion("Catálogo de Servicios")

        NombresServicios.PrimaryKey = Nothing
        NombresServicios.Clear()
        NombresServicios.Columns.Clear()

    End Sub
    Private Sub frmCatalogoServiciosDetalle_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ToolStrip1.Cursor = Cursors.Hand
        ToolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System

        If SubServicioNuevo = True Then
            txtNombre.Text = ""
        Else
            txtNombre.Text = ServicioSelect
        End If

        PreparaGrid()
        CargaNombresSubservicios()
        Dim Claves(0) As DataColumn
        Claves(0) = NombresServicios.Columns("Nombre")
        NombresServicios.PrimaryKey = Claves

        For Each Nombre In NombresServicios.Rows
            CadenaAutocompletado.Add(Nombre("Nombre"))
        Next

        'Actualizar()

        Bitacora.RegistraActividad("Ingresó al catálogo detallado de Servicios")
        Usuario.Ubicacion("Catálogo detallado de Servicios")
    End Sub
    Sub CargaNombresSubservicios()
        NombresServicios.Columns.Add("Nombre")

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim strSql As String = "Select Nombre FROM SubServicios ORDER by Nombre"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql

        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read
            NombresServicios.Rows.Add(rdBuscar("Nombre").ToString.Trim)
        Loop
    End Sub
    Private Sub ControlEdicion(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) Handles dgSubServicios.EditingControlShowing
        If dgSubServicios.CurrentCell.ColumnIndex = 0 Then
            DirectCast(e.Control, TextBox).AutoCompleteMode = AutoCompleteMode.SuggestAppend
            DirectCast(e.Control, TextBox).AutoCompleteSource = AutoCompleteSource.CustomSource
            DirectCast(e.Control, TextBox).AutoCompleteCustomSource = CadenaAutocompletado
        End If
    End Sub
    Private Sub FindeEdicion(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles dgSubServicios.CellEndEdit
        Try
            dgSubServicios.CurrentRow.Cells(0).Value = BuscarStrDatoCitra("SubServicios", "Nombre", "UPPER(Nombre)='" & UCase(dgSubServicios.CurrentRow.Cells(0).Value) & "'")
        Catch ex As Exception

        End Try
    End Sub
    Sub Actualizar()
        Dim strNombre As String = ""
        If txtNombre.Text <> "" Then
            strNombre = Me.txtNombre.Text
            servicio.Nombre = strNombre
        Else
            strNombre = ""
            servicio.Nombre = strNombre
        End If
        servicio.Buscar()
        Scatter()
    End Sub
    Private Sub Scatter()
        txtDescripcion.Text = servicio.Descripcion
        txtFrecuencia.Text = servicio.Frecuencia
        If servicio.Status = 0 Then

        End If
        CargaSubservicios()

    End Sub
    Sub CargaSubservicios()
        dgSubServicios.Rows.Clear()
        PreparaGrid()

        Dim IdServicio As Integer = BuscarIntDatoCitra("Servicios", "IdServicio", "Nombre='" & txtNombre.Text.Trim & "'")

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim strSql As String = "Select Nombre FROM SubServicios S INNER JOIN AsignacionServicios A ON S.IdSubServicio=A.IdSubServicio WHERE A.IdServicio=" & IdServicio

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql

        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim I As Integer = 0

        Do While rdBuscar.Read
            dgSubServicios.Rows(I).Cells(0).Value = rdBuscar("Nombre").ToString.Trim
            I = I + 1
        Loop
    End Sub
    Sub PreparaGrid()
        dgSubServicios.Rows.Add(20)

    End Sub

    Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click
        Close()

    End Sub
    Private Sub Gatter()
        servicio.Nombre = txtNombre.Text.Trim
        servicio.Descripcion = txtDescripcion.Text
        servicio.Frecuencia = txtFrecuencia.Text

        Dim Costo As Double
        Dim CostoTOTAL As Double = 0

        For i = 0 To dgSubServicios.Rows.Count - 1
            If dgSubServicios.Rows(i).Cells(0).Value <> "" Then
                Costo = BuscarDblDatoCitra("SubServicios", "Costo", "UPPER(Nombre)='" & UCase(dgSubServicios.Rows(i).Cells(0).Value) & "'")
                CostoTOTAL = CostoTOTAL + Costo
            End If
        Next
        servicio.Costo = CostoTOTAL
    End Sub
    Sub AsignaServicios()
        Dim IdServicio As Integer = BuscarIntDatoCitra("SELECT IdServicio FROM Servicios WHERE Nombre='" & txtNombre.Text.Trim & "'")
        Dim Asigna As New clsAsignacionServicios

        Dim IdSubServicio As Integer
        For i = 0 To dgSubServicios.Rows.Count - 1
            IdSubServicio = BuscarIntDatoCitra("SELECT IdSubServicio   FROM SubServicios WHERE Nombre='" & dgSubServicios.Rows(i).Cells(0).Value & "'")
            Asigna.IdServicio = IdServicio
            Asigna.IdSubservicio = IdSubServicio
            Asigna.Insertar()
        Next

    End Sub
    Sub Guardar()
        Gatter()
        Dim IdServicio As Integer = BuscarIntDatoCitra("SELECT IdServicio FROM Servicios WHERE Nombre='" & txtNombre.Text.Trim & "'")

        If IdServicio = 0 Then
            servicio.Insertar()
        Else
            servicio.Actualizar()
        End If

        Call SetSqlCitra("DELETE FROM AsignacionServicios WHERE IdServicio=" & IdServicio)
        AsignaServicios()

        txtNombre.Clear()
        txtNombre.Focus()
        frmCatalogoServicios.CargaServicios()
    End Sub

    Private Sub txtNombre_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtNombre.TextChanged
        Actualizar()

    End Sub

    Private Sub ToolStripButton2_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton2.Click
        Guardar()

    End Sub
End Class